1. Field of the Invention
This invention relates to large computer storage controller collections. Particularly, this invention relates to performance-based volume allocation in a storage controller collection.
2. Description of the Related Art
Performance-based volume allocation is the task of determining where to allocate volumes for a workload based on the workload profile in terms of space and performance requirements and the current performance numbers at the various components of the storage controllers. This task becomes more challenging as the storage sizes keep increasing with an increasing number of disks per controller and an increasing number of controllers. Current single controller algorithms do not scale well with the increasing sizes and hence are not suitable for large dynamic storage control scenarios. Furthermore, conventional controller algorithms introduce large variances among system components.
Current storage controllers are sophisticated devices which can be modeled as a hierarchy of components where each component has its performance constraints. By modeling the storage controller as a hierarchy of components, i.e. a resource graph model, dependencies between the hardware components in a storage controller may be captured. The current space and performance numbers for each component are obtained to ensure that no component in the hierarchy is overloaded; overloading of a single component in the hierarchy can disrupt workloads assigned to the storage pools associated with the component. Workload profiles for new workloads may be used to predict the space and performance requirements for new workloads. Other factors such as minimum and maximum permissible or required logical volume sizes can also impact the workload assignment decision making process. The existing performance numbers along with the workload profiles and other factors mentioned above may be taken into account to determine suitable storage controller components for creating volumes for allocating the new workloads.
Conventional algorithms for storage volume allocation are too slow and do not scale well with increasing storage system sizes which makes them unsuitable for many large dynamic storage scenarios. Furthermore, the variance that they introduce among system components can be large, leading to heavy loads on some components in the storage controller resource hierarchy. Other greedy or random assignment algorithms lead to poor allocations resulting in unbalanced systems as they fail to consider load balancing for nodes higher in the resource graph hierarchy. As nodes higher in the resource graph hierarchy are responsible for larger number of workloads below them compared to nodes lower in the hierarchy, any overloading of these nodes can quickly lead to poor overall system performance. Some systems and methods have been developed in the area of storage control and resource allocation.
U.S. Patent Application Publication No. 2006/0200400 by Hunter et al., published Sep. 7, 2006, discloses an improved resource allocation system comprising a reliability decision engine, which allocates the portfolio's assets as required for the desired reliability portfolio. The reliability decision engine includes two reliability decision engines, a basic reliability decision engine and a robust reliability decision engine. The use of robust optimization makes it possible to determine the sensitivity of the optimized portfolio. Scenarios can be specified directly by the user or automatically generated by the system in response to a selection by the user. Inputs are applied to basic the basic reliability decision engine and inputs are applied to robust reliability decision engine.
U.S. Patent Application Publication No. 2006/0136684 by Le et al., published Jun. 22, 2006, discloses a method for preparing data units for access in a data storage system. The data storage system includes multiple storage devices having data units. All the storage devices of the data storage system are not powered on at the same time. The method includes preparing and storing the auxiliary data. The auxiliary data is prepared for a data unit on a storage device that will be powered off during an access request of the data unit. The auxiliary data is stored on the storage devices so that the auxiliary data is likely to be available on a powered-on storage device when the data unit is the subject of an access request.
U.S. Pat. No. 6,247,077 by Muller et al, published Jun. 12, 2001, discloses a highly-scalable parallel processing computer system architecture. The parallel processing system comprises a plurality of compute nodes for executing applications, a plurality of I/O nodes, each communicatively coupled to a plurality of storage resources, and an interconnect fabric providing communication between any of the compute nodes and any of the I/O nodes. The interconnect fabric comprises a network for connecting the compute nodes and the I/O nodes, the network comprising a plurality of switch nodes arranged into more than g(logb N) switch node stages, wherein b is a total number of switch node input/output ports, and g(x) indicates a ceiling function providing the smallest integer not less than the argument x, the switch node stages thereby providing a plurality of paths between any network input port and network output port.
In view of the foregoing, there is a need in the art for programs, methods and system to allocate storage volumes in a distributed storage system with improved performance. Further, there is a need for such programs, methods and systems to employ an algorithm for allocating volumes in large storage controller collections that is scalable and performance-based. These and other needs are met by the present invention as detailed hereafter.